package cn.lizemin.Responsibility.origin;

import cn.lizemin.Responsibility.origin.entity.CFO;
import cn.lizemin.Responsibility.origin.entity.Manager;
import cn.lizemin.Responsibility.origin.entity.Staff;

/**
 * @author lzm
 * @version 1.0
 * @description: 流程审批
 *
 * 存在的缺陷
 *      1.每个报销申请人需要和多个报销审批人紧耦合
 *      2.一旦增加一个审批节点，之前所有的申请流程都需要重构流程
 *      3.每次报销申请都需要写大量的if-else节点代码来实现代码流程
 * @date 2022/5/2 9:47
 */
public class Client {

    /**
     * 程序的入口
     */
    public static void main(String[] args) {
        // 出差花费10000元
        int amount = 10000;

        //先找专员张飞审批
        Staff staff = new Staff("张飞");

        if (!staff.approve(amount)) {
            //如果张飞不批准
            Manager manager = new Manager("关羽");
            // 如果经理还是不批准
            if (!manager.approve(amount)) {
                CFO cfo = new CFO("刘备");
                cfo.approve(amount);
            }

        }



    }

}
